package com.xz.coursearrange.entity.request;

import lombok.Data;

import javax.validation.constraints.AssertTrue;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;

/**
 * @Descripe:
 */
@Data
public class PasswordVO implements Serializable {

    private static final long serialVersionUID = -3552372075611472951L;
    @NotNull(message = "用户ID不能为空")
    private Integer id;

    @NotBlank(message = "旧密码不能为空")
    @Size(min = 6, max = 30, message = "旧密码长度应在6~30之间")
    private String oldPass;

    @NotBlank(message = "新密码不能为空")
    @Size(min = 6, max = 30, message = "新密码长度应在6~30之间")
    private String newPass;

    @NotBlank(message = "确认密码不能为空")
    @Size(min = 6, max = 30, message = "确认密码长度应在6~30之间")
    private String rePass;

    /**
     * 在 Controller 方法中使用 @Valid 验证 PasswordVO 对象时：
     *      这个方法 isPasswordMatch() 会自动被调用。
     *      如果返回值为 false，则校验失败，抛出 "新密码与确认密码不一致" 的异常信息。
     * @return
     */
    @AssertTrue(message = "新密码与确认密码不一致")
    public boolean isPasswordMatch() {
        if (newPass == null || rePass == null) {
            return false;
        }
        return newPass.equals(rePass);
    }
}
